home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 November / Macworld (1999-11).dmg / Updaters / WhiteCap 3.0.4 / WhiteCap Source.sit / WhiteCap Source / SJ SDK / VisualPlugin.h < prev    next >
Text File  |  1999-08-05  |  5KB  |  174 lines

  1. /*
  2.     File:        VisualPlugin.h
  3.  
  4.     Contains:    
  5.  
  6.     Written by:    Jeff Robbin
  7.  
  8.     Copyright:    Copyright ©1999 Jeff Robbin
  9. */
  10.  
  11.  
  12. #pragma once
  13.  
  14. #include "SoundJamAPI.h"
  15.  
  16. #if PRAGMA_STRUCT_ALIGN
  17.     #pragma options align=power
  18. #endif
  19.  
  20. #ifdef __cplusplus
  21. extern "C" {
  22. #endif
  23.  
  24. enum {
  25.     /* VisualPlugin messages */
  26.     
  27.     kVisualPluginIdleMessage            = 'null',
  28.  
  29.     kVisualPluginInitializeMessage        = 'init',
  30.     kVisualPluginCleanupMessage            = 'clr ',
  31.     
  32.     kVisualPluginConfigureMessage        = 'cnfg',    /* Configure the plugin (may not be enabled) */
  33.     kVisualPluginAboutMessage            = 'abou',    /* Display any about information. (may not be enabled) */
  34.     
  35.     kVisualPluginProcessSamplesMessage    = 'mods',    /* Process samples (INTERRUPT-SAFE). */
  36.     kVisualPluginFlushSamplesMessage    = 'flus',    /* Flush any samples being processed. */
  37.                                                     /* - Probably from a stream reposition. */
  38.  
  39.     kVisualPluginEnableMessage            = 'von ',    /* Turn on the module */
  40.     kVisualPluginDisableMessage            = 'voff',    /* Turn off the module */
  41.     
  42.     kVisualPluginShowWindowMessage        = 'show',    /* Show the plugin window */
  43.     kVisualPluginHideWindowMessage        = 'hide',    /* Hide the plugin window */
  44.     
  45.     kVisualPluginResizeMessage            = 'resz',    /* Resizing request */
  46.     kVisualPluginSetWindowMessage        = 'swin',    /* Change the window parameters */
  47.     
  48.     kVisualPluginRenderMessage            = 'vrnd',    /* Render some samples */
  49.     kVisualPluginUpdateMessage            = 'vupd',    /* Update the window */
  50.     kVisualPluginPlayMessage            = 'vply',    /* Playing a track */
  51.     kVisualPluginStopMessage            = 'vstp',    /* Stopping a track */
  52.     kVisualPluginPauseMessage            = 'vpau',    /* Pausing a track */
  53.     kVisualPluginUnpauseMessage            = 'vunp',    /* Unpausing a track */
  54.     kVisualPluginEventMessage            = 'vevt'    /* Mac-event. */
  55. };
  56.  
  57. /*
  58.     VisualPlugin messages
  59. */
  60.  
  61. enum {
  62.     kVisualMaxDataChannels        = 2,
  63.  
  64.     kVisualNumWaveformEntries    = 512,
  65.     kVisualNumSpectrumEntries    = 512
  66. };
  67.  
  68. enum {
  69.     /* ShowWindow options */
  70.     
  71.     kWindowIsFullScreen = (1L << 0)
  72. };
  73.  
  74. struct RenderVisualData {
  75.     UInt8                            numWaveformChannels;
  76.     UInt8                            waveformData[kVisualMaxDataChannels][kVisualNumWaveformEntries];
  77.     
  78.     UInt8                            numSpectrumChannels;
  79.     UInt8                            spectrumData[kVisualMaxDataChannels][kVisualNumSpectrumEntries];
  80. };
  81. typedef struct RenderVisualData RenderVisualData;
  82.  
  83. struct VisualPluginInitMessage {
  84.     UInt32                            version;                /* Input */
  85.  
  86.     void *                            appCookie;                /* Input */
  87.     SoundJamProcPtr                    playerProc;                /* Input */
  88.  
  89.     OptionBits                        options;                /* Output */
  90.     void *                            refcon;                    /* Output */
  91. };
  92. typedef struct VisualPluginInitMessage VisualPluginInitMessage;
  93.  
  94. struct VisualPluginShowWindowMessage {
  95.     CGrafPtr                        port;                    /* Input - May be nil! */
  96.     Rect                            drawRect;                /* Input */
  97.     OptionBits                        options;                /* Input */
  98. };
  99. typedef struct VisualPluginShowWindowMessage VisualPluginShowWindowMessage;
  100.  
  101. struct VisualPluginSetWindowMessage {
  102.     CGrafPtr                        port;                    /* Input - May be nil! */
  103.     Rect                            drawRect;                /* Input */
  104.     OptionBits                        options;                /* Input */
  105. };
  106. typedef struct VisualPluginSetWindowMessage VisualPluginSetWindowMessage;
  107.  
  108. struct VisualPluginResizeMessage {
  109.     SInt16                            desiredWidth;            /* Input */
  110.     SInt16                            desiredHeight;            /* Input */
  111.     
  112.     SInt16                            approvedWidth;            /* Output */
  113.     SInt16                            approvedHeight;            /* Output */
  114. };
  115. typedef struct VisualPluginResizeMessage VisualPluginResizeMessage;
  116.  
  117. struct VisualPluginPlayMessage {
  118.     TrackSpec *                        trackSpec;                /* Input */
  119.     SInt32                            volume;                    /* Input */
  120.     
  121.     UInt32                            bitRate;                /* Input */
  122.     
  123.     SoundComponentData                soundFormat;            /* Input */
  124. };
  125. typedef struct VisualPluginPlayMessage VisualPluginPlayMessage;
  126.  
  127. struct VisualPluginRenderMessage {
  128.     RenderVisualData *                renderData;
  129.     UInt32                            timeStampID;
  130. };
  131. typedef struct VisualPluginRenderMessage VisualPluginRenderMessage;
  132.  
  133. struct VisualPluginEventMessage {
  134.     EventRecord *                    event;
  135. };
  136. typedef struct VisualPluginEventMessage VisualPluginEventMessage;
  137.  
  138. struct VisualPluginProcessSamplesMessage {
  139.  
  140.     UInt32                            timeStampID;            /* Input */
  141.  
  142.     SInt16 *                        sampleBuffer;            /* Input */
  143.         
  144.     UInt32                            numSamples;                /* Input */
  145.     UInt32                            maxSamples;                /* Input */
  146.     
  147.     UInt32                            numOutputSamples;        /* Output (<= maxSamples) */
  148. };
  149. typedef struct VisualPluginProcessSamplesMessage VisualPluginProcessSamplesMessage;
  150.  
  151. struct VisualPluginMessageInfo {
  152.     union {
  153.         VisualPluginInitMessage                initMessage;
  154.         VisualPluginShowWindowMessage        showWindowMessage;
  155.         VisualPluginSetWindowMessage        setWindowMessage;
  156.         VisualPluginResizeMessage            resizeMessage;
  157.         VisualPluginPlayMessage                playMessage;
  158.         VisualPluginRenderMessage            renderMessage;
  159.         VisualPluginEventMessage            eventMessage;
  160.  
  161.         VisualPluginProcessSamplesMessage    processSamplesMessage;
  162.     } u;
  163. };
  164. typedef struct VisualPluginMessageInfo VisualPluginMessageInfo;
  165.  
  166. #ifdef __cplusplus
  167. }
  168. #endif
  169.  
  170. #if PRAGMA_STRUCT_ALIGN
  171.     #pragma options align=reset
  172. #endif
  173.  
  174.